#!/usr/bin/env bash
# 此脚本已经不支持CentOS6 请不要使用低于CentOS7的系统执行
# 请确保此前没有安装其他的VNC，例如RealVNC
. common.sh
# 开始安装openssl为下面的随机密码作准备
yum install -y openssl openssl-devel
RunUser=root
pcount=1
while [ -n "$1" ]; do

    arr=(${1//=/ })
    if [ "${arr[0]}"x = "--user"x ]; then
        RunUser=${arr[1]}
    fi
    shift # shift可以偏移一个参数
done
BlueEcho "需要启动VNC的用户为："$RunUser
# 检查内核的启动状态，是否是命令行启动还是图形启动，如果是命令启动，则修改为图形启动,并安装桌面图形
RunMode=$(systemctl get-default)
if [ "$RunMode"x != "graphical.target"x ]; then
    # 如果不是图形界面，则进行图形界面的安装，以及设置使用图形启动
    # 开始安装图形界面
    yum groupinstall -y "GNOME Desktop" "Graphical Administration Tools"
    systemctl set-default graphical.target
fi
# 完成了图形界面的安装和配置
# 安装VNC 并配置VNC
yum install -y tigervnc-server tigervnc vnc vnc-server
rm -rf /tmp/.X11-unix
existCount=1
vncserviceName=vncserver@:$existCount.service
vncserviceFilePath=/usr/lib/systemd/system/$vncserviceName
while [ -f "$vncserviceFilePath" ]; do
    existCount=$(expr $existCount + 1)
    vncserviceName=vncserver@:$existCount.service
    vncserviceFilePath=/usr/lib/systemd/system/$vncserviceName
done
# 检查是否存在该文件，如果存在，则+1并重新检测
cat >$vncserviceFilePath<<EOF
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper $RunUser %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target
EOF
firewall-cmd --zone=public --permanent --add-port=590$existCount/tcp
firewall-cmd --zone=public --permanent --add-port=590$existCount/udp
firewall-cmd --reload
vncpass=$(tr -dc 'A-Za-z(0-9)' </dev/urandom | head -c 15; echo)
echo $vncpass | vncpasswd $RunUser --stdin
GreenEcho "您运行的VNC端口为590"$existCount
GreenEcho "您的VNC密码为："$vncpass


















